package cn.iocoder.yudao.module.crossborder.order.controller.admin.orderpayment.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import cn.idev.excel.annotation.*;

@Schema(description = "管理后台 - 跨境电商订单支付 Response VO")
@Data
@ExcelIgnoreUnannotated
public class OrderPaymentRespVO {

    @Schema(description = "支付编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "6155")
    @ExcelProperty("支付编号")
    private Long id;

    @Schema(description = "订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "22463")
    @ExcelProperty("订单编号")
    private Long orderId;

    @Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("订单号")
    private String orderNo;

    @Schema(description = "支付单号", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("支付单号")
    private String paymentNo;

    @Schema(description = "平台支付ID", example = "29234")
    @ExcelProperty("平台支付ID")
    private String platformPaymentId;

    @Schema(description = "支付方式", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("支付方式")
    private String paymentMethod;

    @Schema(description = "支付渠道")
    @ExcelProperty("支付渠道")
    private String paymentChannel;

    @Schema(description = "支付服务商")
    @ExcelProperty("支付服务商")
    private String paymentProvider;

    @Schema(description = "支付类型（1全额支付 2部分支付 3分期支付）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @ExcelProperty("支付类型（1全额支付 2部分支付 3分期支付）")
    private Integer paymentType;

    @Schema(description = "支付金额", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("支付金额")
    private BigDecimal paymentAmount;

    @Schema(description = "支付货币", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("支付货币")
    private String currencyCode;

    @Schema(description = "汇率")
    @ExcelProperty("汇率")
    private BigDecimal exchangeRate;

    @Schema(description = "基础货币金额")
    @ExcelProperty("基础货币金额")
    private BigDecimal baseAmount;

    @Schema(description = "手续费", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("手续费")
    private BigDecimal feeAmount;

    @Schema(description = "网关费用", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("网关费用")
    private BigDecimal gatewayFee;

    @Schema(description = "处理费用", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("处理费用")
    private BigDecimal processingFee;

    @Schema(description = "净收金额", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("净收金额")
    private BigDecimal netAmount;

    @Schema(description = "支付状态（10待支付 20支付中 30支付成功 40支付失败 50已退款 60部分退款）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @ExcelProperty("支付状态（10待支付 20支付中 30支付成功 40支付失败 50已退款 60部分退款）")
    private Integer paymentStatus;

    @Schema(description = "交易ID", example = "28482")
    @ExcelProperty("交易ID")
    private String transactionId;

    @Schema(description = "授权码")
    @ExcelProperty("授权码")
    private String authorizationCode;

    @Schema(description = "参考号")
    @ExcelProperty("参考号")
    private String referenceNo;

    @Schema(description = "支付时间")
    @ExcelProperty("支付时间")
    private LocalDateTime paymentTime;

    @Schema(description = "过期时间")
    @ExcelProperty("过期时间")
    private LocalDateTime expireTime;

    @Schema(description = "回调时间")
    @ExcelProperty("回调时间")
    private LocalDateTime callbackTime;

    @Schema(description = "回调数据JSON")
    @ExcelProperty("回调数据JSON")
    private String callbackData;

    @Schema(description = "风险评分")
    @ExcelProperty("风险评分")
    private BigDecimal riskScore;

    @Schema(description = "风险等级（1低 2中 3高）")
    @ExcelProperty("风险等级（1低 2中 3高）")
    private Integer riskLevel;

    @Schema(description = "反欺诈检查结果JSON")
    @ExcelProperty("反欺诈检查结果JSON")
    private String fraudCheckResult;

    @Schema(description = "支付信息JSON")
    @ExcelProperty("支付信息JSON")
    private String paymentInfo;

    @Schema(description = "错误代码")
    @ExcelProperty("错误代码")
    private String errorCode;

    @Schema(description = "错误信息")
    @ExcelProperty("错误信息")
    private String errorMessage;

    @Schema(description = "重试次数", requiredMode = Schema.RequiredMode.REQUIRED, example = "3177")
    @ExcelProperty("重试次数")
    private Integer retryCount;

    @Schema(description = "备注", example = "你猜")
    @ExcelProperty("备注")
    private String remark;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

}
